// 1 10-100的随机数10个,排序
let fn = (flag, min, max) => {
  let list = []
  for (let i = 0; i < 10; i++) {
    let num = Number.parseInt(Math.random() * (max - min + 1)) + min
    list.push(num)
  }
  list.sort((x, y) => (flag ? x - y : y - x))
  console.log(list)
}
// fn(true, 10, 100)

// 2 10-100的随机数10个,排重
let fn2 = () => {
  let arr = [1, 3, 4, 4, 1, 1, 3, 0, 2, 0]
  let list = []
  for (let i = 0, n = arr.length; i < n; i++) {
    if (!list.includes(arr[i])) {
      list.push(arr[i])
    }
  }
  list.sort((x, y) => x - y)
  console.log(list)
}

// 使用set集合的特征实现数组的排重
// Set集合是ES6提供新的数据解构，其特点是元素无序，唯一
let fn3 = (arr, flag) => {
  // 解构set集合元素到数组中并排序
  return [...new Set(arr)].sort((x, y) => (flag ? x - y : y - x))
}
// console.log(fn3([1, 3, 4, 4, 1, 1, 3, 0, 2, 0], 0))

let fn4 = () => {
  let list = []
  for (let i = 0; i < 10; i++) {
    let num = Number.parseInt(Math.random() * (100 - 10 + 1)) + 10
    if (!list.includes(num)) {
      list.push(num)
    } else {
      i--
      continue
    }
  }
  list.sort((x, y) => {
    return x - y
  })
  console.log(list)
}
// fn4()

// 3 查看数组中包含A或a的单词个数
let fn5 = () => {
  let list = ['sdAfag', 'werAt', 'dfagh', 'dfg', 'hjkl']
  let count = 0
  for (let item of list) {
    if (item.includes('A') || item.includes('a')) {
      count++
    }
  }
  console.log(`包含A或a的单词有${count}个`)
}
// fn5()

// 4 把单词首字母进行大写 hello-world-web32 ---> helloWorldWeb32
// 使用字符串的split('-')函数--->['hello','world','web32']
let fn6 = () => {
  let str = 'hello-world-web32'
  // 对字符进行分割
  let list = str.split('-')
  console.log(list) // [ 'hello', 'world', 'web32' ]
  for (let i = 1; i < list.length; i++) {
    let arr = list[i].split('') // [ 'w', 'o', 'r', 'l', 'd' ]
    arr[0] = toUpperCase(arr[0]) // [ 'W', 'o', 'r', 'l', 'd' ]
    list[i] = arr.join('') // 'World'
  }
  console.log(str, '--->', list.join('')) // hello-world-web32 ---> helloWorldWeb32
}
fn6()

// 把字符串code的首位字母转大写并返回
function toUpperCase(code) {
  // code = [a-zA-Z]
  // 判断非空 判断是否是字符串
  if (!code || typeof code !== 'string') {
    throw '请传递字符串参数'
  }
  let num = code.charCodeAt(0) // code的第1个字符转换为数字
  // 判断是小写字符
  if (num > 122 || num < 97) {
    throw '请传递小写字符参数'
  }
  // 转小写为大写字符
  return String.fromCharCode(num - 32)
}

// console.log(toUpperCase(''))
